package core

import (
    "encoding/json"
    "fmt"
    "os"

    "gitee.com/shijingzhao/z-frame/zhttp"
    "gitee.com/shijingzhao/z-frame/zlog"
    "gitee.com/shijingzhao/z-frame/zrpc"
    "gitee.com/shijingzhao/z-frame/zscript"
)

// appConfig 应用配置
type appConfig struct {
    Name   string         `json:"name"`
    Log    zlog.Config    `json:"log"`
    Rpc    zrpc.Config    `json:"rpc"`
    Http   zhttp.Config   `json:"http"`
    Script zscript.Config `json:"script"`
}

var AppConfig appConfig

// LoadSystemConfig 加载系统配置
func LoadSystemConfig() {
    parseConfigFile("./config/app.json", &AppConfig)
}

// LoadCustomConfig 解析自定义配置
func LoadCustomConfig(file string, config any) any {
    parseConfigFile(file, config)
    return config
}

// 解析配置文件
func parseConfigFile(file string, config any) {
    content, err := os.ReadFile(file)
    if err != nil {
        panic(any(fmt.Sprintf("配置:加载失败[%s]", err.Error())))
    }

    err = json.Unmarshal(content, config)
    if err != nil {
        panic(any(fmt.Sprintf("配置:解析失败[%s]", err.Error())))
    }
}
